home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / xpress.hu.ifs < prev    next >
Text File  |  2005-03-13  |  14KB  |  429 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Zoltan Karpati    (<link>pinyo@gibzone.hu</link>)
  8. Title=Xpress.hu
  9. Description=Xpress.hu (HUN) import
  10. Site=http://www.xpress.hu
  11. Language=HU
  12. Version=1.1
  13. Requires=3.5.0
  14. Comments= 
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program xpress;
  23.  
  24. var
  25.   MovieName: string;
  26.  
  27. function GetPicFormat(PicFormat: string): String;
  28. begin
  29.     if PicFormat = '1.gif' then result := '(4:3/FF)';
  30.     if PicFormat = '2.gif' then result := '(4:3/1.54:1)';
  31.     if PicFormat = '3.gif' then result := '(4:3/1.66:1)';
  32.     if PicFormat = '4.gif' then result := '(4:3/1.78:1)';
  33.     if PicFormat = '5.gif' then result := '(4:3/1.85:1)';
  34.     if PicFormat = '6.gif' then result := '(4:3/2.35:1)';
  35.     if PicFormat = '7.gif' then result := '(16:9/1.66:1)';
  36.     if PicFormat = '8.gif' then result := '(16:9/1.78:1)';
  37.     if PicFormat = '9.gif' then result := '(16:9/1.85:1)';
  38.     if PicFormat = '10.gif' then result := '(16:9/2.35:1)';
  39.     if PicFormat = '11.gif' then result := '(16:9/2.40:1)';
  40.     if PicFormat = '12.gif' then result := '(4:3/2.40:1)';
  41.     if PicFormat = '13.gif' then result := '(4:3/PS)';
  42.     if PicFormat = '14.gif' then result := '(16:9/2.76:1)';
  43.     if PicFormat = '15.gif' then result := '(16:9/2.5:1)';
  44. end;
  45.  
  46. function Rating(Rated: string): String;
  47. begin
  48.     if ((Rated > '0') and (Rated < '5')) then result := '0';
  49.     if ((Rated >= '5') and (Rated < '15')) then result := '1';
  50.     if ((Rated >= '15') and (Rated < '25')) then result := '2';
  51.     if ((Rated >= '25') and (Rated < '35')) then result := '3';
  52.     if ((Rated >= '35') and (Rated < '45')) then result := '4';
  53.     if ((Rated >= '45') and (Rated < '55')) then result := '5';
  54.     if ((Rated >= '55') and (Rated < '65')) then result := '6';
  55.     if ((Rated >= '65') and (Rated < '75')) then result := '7';
  56.     if ((Rated >= '75') and (Rated < '85')) then result := '8';
  57.     if ((Rated >= '85') and (Rated < '95')) then result := '9';
  58.     if (Rated >= '95') then result := '10';
  59. end;
  60.  
  61. function RemoveHTML(Szoveg: string): String;
  62. begin
  63.   Szoveg := StringReplace(Szoveg, '%20', ' ');
  64.   Szoveg := StringReplace(Szoveg, '<i>', '');
  65.   Szoveg := StringReplace(Szoveg, '</i>', '');
  66.   Szoveg := StringReplace(Szoveg, '<b>', '');
  67.   Szoveg := StringReplace(Szoveg, '</b>', '');
  68.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  69.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  70.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  71.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  72.   Szoveg := StringReplace(Szoveg, '<li>', chr(13)+chr(10));
  73.   Szoveg := StringReplace(Szoveg, '</p>', chr(13)+chr(10));
  74.   HTMLRemovetags(Szoveg);
  75.   HTMLDecode(Szoveg);
  76.   result := Trim(Szoveg);
  77. end;
  78.  
  79. function AddHTML(Szoveg: string): String;
  80. begin
  81.   Szoveg := StringReplace(Szoveg, ' ','%20');
  82.   result := Szoveg;
  83. end;
  84.  
  85. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  86. var
  87.   i: Integer;
  88. begin
  89.   result := -1;
  90.   if StartAt < 0 then
  91.     StartAt := 0;
  92.   for i := StartAt to List.Count-1 do
  93.     if Pos(Pattern, List.GetString(i)) <> 0 then
  94.     begin
  95.       result := i;
  96.       Break;
  97.     end;
  98. end;
  99.  
  100. procedure AnalyzePage(Address: string);
  101. var
  102.   Page: TStringList;
  103.   LineNr: Integer;
  104. begin
  105.   Page := TStringList.Create;
  106.   Page.Text := GetPage(Address);
  107.   if pos('karaktersor', Page.Text) = 0 then
  108.   begin
  109.     AnalyzeMoviePage(Page)
  110.   end else
  111.   begin
  112.     PickTreeClear;
  113.     LineNr := 0;
  114.     LineNr := FindLine('<a href="film.asp?FILMAZ=', Page, LineNr);
  115.     if LineNr > -1 then
  116.     begin
  117.       PickTreeAdd('DVD Movies', '');
  118.       AddMoviesTitles(Page, LineNr);
  119.     end;
  120.     if PickTreeExec(Address) then
  121.       AnalyzePage(Address);
  122.   end;
  123.   Page.Free;
  124. end;
  125.  
  126. procedure AnalyzeMoviePage(Page: TStringList);
  127. var
  128.   Line, Value, Value2, FullValue: string;
  129.   LineNr: Integer;
  130.   Adder: Integer;
  131.   Rate: Integer;
  132.   BeginPos, EndPos: Integer;
  133. begin
  134.  
  135.   SetField(fieldSource,'XPress.hu');
  136.   SetField(fieldMediaType, 'DVD');
  137.  
  138.   // fieldURL
  139.   LineNr := FindLine('../shop/rendel.asp?FILMID=', Page, 0);
  140.   if LineNr > -1 then
  141.   begin
  142.     Line := Page.GetString(LineNr);
  143.     BeginPos := pos('FILMID=', Line)+7;
  144.     EndPos := pos('&', Line);
  145.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  146.     SetField(fieldURL, 'http://www.xpress.hu/dvd/film.asp?FILMAZ=' + Value );
  147.   end;
  148.  
  149.   // fieldProducer  - studi≤
  150.   LineNr := FindLine('st·di≤ </font>', Page, 0);
  151.   if LineNr > -1 then
  152.   begin
  153.     Line := Page.GetString(LineNr+5);
  154.     BeginPos := pos('"menulink">', Line)+11;
  155.     EndPos := pos('</a>', Line);
  156.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  157.     SetField(fieldProducer,RemoveHTML(Value));
  158.   end;
  159.  
  160.   // fieldRating
  161.   LineNr := FindLine('m2cimsor.gif', Page, 0);
  162.   if LineNr > -1 then
  163.   begin
  164.     Line := Page.GetString(LineNr+15);
  165.     BeginPos := pos('sans-serif">', Line)+12;
  166.     EndPos := pos('%', Line);
  167.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  168.     Value := Rating(Value);
  169.     SetField(fieldRating,Value);
  170.   end;
  171.  
  172.   // fieldLength
  173.   LineNr := FindLine('film hossza</font>', Page, 0);
  174.   if LineNr > -1 then
  175.   begin
  176.     Line := Page.GetString(LineNr+5);
  177.     BeginPos := pos('"#000000">', Line)+9;
  178.     Delete(line,1,BeginPos);
  179.     EndPos := pos(' ', Line);
  180.     Value := copy(Line, 1, EndPos-1);
  181.     SetField(fieldLength,RemoveHTML(Value));
  182.   end;
  183.  
  184.   LineNr := FindLine('>Feliratok<', Page, 0);
  185.   if LineNr > -1 then
  186.   begin
  187.     Line := Page.GetString(LineNr+6);
  188.     BeginPos := pos('sans-serif">', Line)+12;
  189.     EndPos := pos('</font>', Line);
  190.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  191.     SetField(fieldSubtitles,RemoveHTML(Value));
  192.   end;
  193.  
  194.   LineNr := FindLine('>Hangsßvok<', Page, 0);
  195.   if LineNr > -1 then
  196.   begin
  197.     Adder := 5;
  198.     repeat
  199.       Value2 := '';
  200.       Line := Page.GetString(LineNr + Adder);
  201.       BeginPos := pos('size="1">', Line);
  202.       if BeginPos > 1 then
  203.       begin
  204.         BeginPos := Beginpos + 9;
  205.         EndPos := pos('<br>',Line);
  206.         Value := copy(Line, BeginPos, EndPos - BeginPos);
  207.         Line := Page.GetString(LineNr + Adder + 1);
  208.         if pos('hang/1.gif',Line) > 0 then Value2 := '(DD5.1)';
  209.         if pos('hang/2.gif',Line) > 0 then Value2 := '(Sztereo)';
  210.         if pos('hang/3.gif',Line) > 0 then Value2 := '(Surround)';
  211.         if pos('hang/4.gif',Line) > 0 then Value2 := '(Mono)';
  212.         if pos('hang/5.gif',Line) > 0 then Value2 := '(Mono)';
  213.         if pos('hang/6.gif',Line) > 0 then Value2 := '(DTS)';
  214.         if pos('hang/7.gif',Line) > 0 then Value2 := '(DD5.1)';
  215.         if pos('hang/12.gif',Line) > 0 then Value2 := '(DD5.0)';
  216.         if pos('hang/13.gif',Line) > 0 then Value2 := '(3.0)';
  217.         if pos('hang/14.gif',Line) > 0 then Value2 := '(4.0)';
  218.         if pos('hang/15.gif',Line) > 0 then Value2 := '(DD5.1EX)';
  219.         if pos('hang/16.gif',Line) > 0 then Value2 := '(DD4.1)';
  220.         if pos('hang/17.gif',Line) > 0 then Value2 := '(DTS ES)';
  221.         if FullValue > '' then Fullvalue := Fullvalue + ', ';
  222.         FullValue := FullValue + Value + ' ' + Value2;
  223.       end
  224.       Adder := Adder + 1;
  225.     until pos('eeeeee', Line) > 0;
  226.     SetField(fieldLanguages,RemoveHTML(FullValue));
  227.   end;
  228.  
  229.   // fieldComments Title
  230.   LineNr := FindLine('kepek/kepform/', Page, 0);
  231.   FullValue := '';
  232.   if LineNr > -1 then
  233.   begin
  234.     repeat
  235.       Line := Page.GetString(LineNr);
  236.  
  237.       BeginPos := pos('kepek/kepform/', Line);
  238.       if BeginPos > 1 then
  239.       begin
  240.         BeginPos := BeginPos + 14;
  241.         EndPos := pos('">', Line);
  242.         Value := copy(Line, BeginPos, EndPos - BeginPos);
  243.         Value := GetPicFormat(Value);
  244.         if FullValue > '' then Fullvalue := Fullvalue + ', ';
  245.         FullValue := FullValue + Value;
  246.  
  247.         Delete(Line,1,EndPos);
  248.         BeginPos := pos('kepek/kepform/', Line);
  249.         if BeginPos > 1 then
  250.         begin
  251.           BeginPos := BeginPos + 14;
  252.           EndPos := pos('">', Line);
  253.           Value := copy(Line, BeginPos, EndPos - BeginPos);
  254.           Value := GetPicFormat(Value);
  255.           if FullValue > '' then Fullvalue := Fullvalue + ', ';
  256.           FullValue := FullValue + Value;
  257.         end
  258.       end
  259.       LineNr := FindLine('kepek/kepform/', Page, LineNr);
  260.     until LineNr > -1;
  261.     SetField(fieldComments,FullValue);
  262.   end;
  263.  
  264.   // Picture
  265.   LineNr := FindLine('cover/nagy/', Page, 0);
  266.   if LineNr > -1 then
  267.   begin
  268.     Line := Page.GetString(LineNr);
  269.     BeginPos := pos('cover/nagy/', Line);
  270.     Delete(Line, 1, BeginPos-1);
  271.     EndPos := pos(',', Line);
  272.     Value := copy(Line, 1, EndPos - 2);
  273.     GetPicture('http://www.xpress.hu/dvd/' + Value);
  274.   end;
  275.  
  276.  
  277.   // fieldTranslated Title
  278.   LineNr := FindLine('#cc3300', Page, 0);
  279.   Line := Page.GetString(LineNr);
  280.   if LineNr > -1 then
  281.   begin
  282.     BeginPos := pos('#cc3300', Line)+12;
  283.     EndPos := pos('</b>', Line);
  284.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  285.     SetField(fieldTranslatedTitle,RemoveHTML(Value));
  286.   end;
  287.  
  288.   // Original Title & Year Country
  289.   if LineNr > -1 then
  290.   begin
  291.   Line := Page.GetString(LineNr+1);
  292.   BeginPos := pos('#000000', Line)+8;
  293.   Delete(Line, 1, BeginPos);
  294.   Value := Line;
  295.   SetField(fieldOriginalTitle, RemoveHTML(Value));
  296.   end;
  297.  
  298.   if LineNr > -1 then
  299.   begin
  300.     Line := Page.GetString(LineNr+2);
  301.     BeginPos := pos('(', Line) + 1;
  302.     EndPos := Pos('-', Line);
  303.     Value := copy(Line, BeginPos, EndPos - BeginPos-1);
  304.     SetField(fieldCountry, Value);
  305.   end;
  306.   
  307.   if LineNr > -1 then
  308.   begin
  309.     Line := Page.GetString(LineNr+2);
  310.     BeginPos := pos('-', Line) + 1;
  311.     EndPos := Pos(')', Line);
  312.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  313.     SetField(fieldYear, Value);
  314.   end;
  315.  
  316.   // Director
  317.   LineNr := FindLine('Rendezte:', Page, 0);
  318.   if LineNr > -1 then
  319.   begin
  320.     Line := Page.GetString(LineNr+1);
  321.     FullValue := '';
  322.     repeat
  323.       BeginPos := pos('menulink">', Line) + 9;
  324.       Delete(Line,1,BeginPos);
  325.       EndPos := pos('</a>', Line)-1;
  326.       Value := copy(Line, 1, EndPos);
  327.       HTMLDecode(Value);
  328.       if FullValue > '' then Fullvalue := Fullvalue + ', ';
  329.       FullValue := FullValue + Value;
  330.       Delete(Line, 1, EndPos);
  331.     until pos('menulink">', Line) = 0;
  332.  
  333.     SetField(fieldDirector, RemoveHTML(FullValue));
  334.   end;
  335.  
  336.   // Actors
  337.   LineNr := FindLine('>Szerepl⌡k:<', Page, 0);
  338.   if LineNr > -1 then
  339.   begin
  340.     Line := Page.GetString(LineNr+1);
  341.     FullValue := '';
  342.     repeat
  343.       BeginPos := pos('NEV=', Line) + 4;
  344.       EndPos := pos('VID', Line);
  345.       Value := copy(Line, BeginPos, EndPos - BeginPos-1);
  346.       HTMLDecode(Value);
  347.       if FullValue > '' then Fullvalue := Fullvalue + ', ';
  348.       FullValue := FullValue + Value;
  349.       Delete(Line, 1, EndPos);
  350.     until pos('NEV=', Line) = 0;
  351.     
  352.     SetField(fieldActors, RemoveHTML(FullValue));
  353.   end;
  354.  
  355.   //Category
  356.   LineNr := FindLine('>M√faj:<', Page, 0);
  357.   if LineNr > -1 then
  358.   begin
  359.     Line := Page.GetString(LineNr + 1);
  360.     BeginPos := pos('#990000">', Line) + 9;
  361.     EndPos := pos('</', Line);
  362.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  363.     SetField(fieldCategory, RemoveHTML(Value));
  364.   end;
  365.  
  366.   //Description
  367.   LineNr := FindLine('>Tartalom:<', Page, 0);
  368.   if LineNr > -1 then
  369.   begin
  370.     Adder := 6;
  371.     Line := Page.GetString(LineNr + 5);
  372.     BeginPos := pos('color="#000000">', Line);
  373.     Delete(Line, 1, BeginPos+15);
  374.     FullValue := RemoveHTML(Line);
  375.     repeat
  376.       Value := Page.GetString(LineNr + Adder);
  377.       FullValue := FullValue + Value;
  378.       Adder := Adder + 1 ;
  379.     until (pos('</td>', Value) > 0);
  380.  
  381.     SetField(fieldDescription, RemoveHTML(FullValue));
  382.   end;
  383.  
  384.   //DisplayResults;
  385. end;
  386.  
  387. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  388. var
  389.   Line: string;
  390.   MovieTitle, MovieAddress,OTitle: string;
  391.   StartPos: Integer;
  392. begin
  393.   repeat
  394.     LineNr := LineNr + 1;
  395.     Line := Page.GetString(LineNr);
  396.     StartPos := pos('0000" size="2">', Line);
  397.     if StartPos > 0 then
  398.     begin
  399.       StartPos := pos('FILMAZ=', Line)+7;
  400.       MovieAddress := copy(Line, StartPos, pos('VID', Line) - StartPos - 5);
  401.  
  402.       StartPos := pos('0000" size="2">', Line)+15;
  403.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos - 39);
  404.  
  405.       LineNr := FindLine('<font size="1">', Page, LineNr+1);
  406.       Line := Page.GetString(LineNr);
  407.       StartPos := pos('<font color="#666666">', Line)+22;
  408.       OTitle := copy(Line, StartPos, pos('</font>', Line) - StartPos);
  409.  
  410.       PickTreeAdd(MovieTitle+'--'+OTitle, 'http://www.xpress.hu/dvd/film.asp?FILMAZ=' + MovieAddress);
  411.     end;
  412.   until pos('</html>', Line) > 0;
  413. end;
  414.  
  415. begin
  416.   if CheckVersion(3,5,0) then
  417.   begin
  418.     MovieName := GetField(fieldOriginalTitle);
  419.     if MovieName = '' then
  420.       MovieName := GetField(fieldTranslatedTitle);
  421.     if Input('Xpress.hu Import', 'Add meg a filme cφmΘt:', MovieName) then
  422.     begin
  423.       AnalyzePage('http://www.xpress.hu/dvd/keres.asp?keres='+AddHTML(MovieName)+'&VID=12219327439007175&GOMB=1');
  424.     end;
  425.   end else
  426.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  427. end.
  428.  
  429.